<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>cppMISC: wheels::dm::dispatcher&lt; cmdType &gt; 模板类 参考</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript" src="../../darkmode_toggle.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">cppMISC<span id="projectnumber">&#160;v1.1</span>
   </div>
   <div id="projectbrief">cppMisc 文档系统</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('../../',true,false,'search.php','搜索',false);
  $(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">载入中...</div>
<div class="SRStatus" id="Searching">搜索中...</div>
<div class="SRStatus" id="NoMatches">未找到</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../df/d8d/namespacewheels.html">wheels</a></li><li class="navelem"><a class="el" href="../../d8/d2d/namespacewheels_1_1dm.html">dm</a></li><li class="navelem"><a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">dispatcher</a></li>  </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="../../d5/d97/classwheels_1_1dm_1_1dispatcher-members.html">所有成员列表</a>  </div>
  <div class="headertitle"><div class="title">wheels::dm::dispatcher&lt; cmdType &gt; 模板类 参考</div></div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a>&gt;</code></p>
<div class="dynheader">
类 wheels::dm::dispatcher&lt; cmdType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d7/de9/classwheels_1_1dm_1_1dispatcher__inherit__graph.png" border="0" usemap="#awheels_1_1dm_1_1dispatcher_3_01cmd_type_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="awheels_1_1dm_1_1dispatcher_3_01cmd_type_01_4_inherit__map" id="awheels_1_1dm_1_1dispatcher_3_01cmd_type_01_4_inherit__map">
<area shape="rect" title=" " alt="" coords="5,769,227,1356"/>
<area shape="rect" href="../../de/d44/classwheels_1_1dm_1_1singleton.html" title=" " alt="" coords="29,395,203,720"/>
<area shape="poly" title=" " alt="" coords="119,735,119,769,113,769,113,735"/>
<area shape="rect" href="../../de/d44/classwheels_1_1dm_1_1singleton.html" title=" " alt="" coords="32,5,200,331"/>
<area shape="poly" title=" " alt="" coords="119,346,119,395,113,395,113,346"/>
</map>
</div>
<div class="dynheader">
wheels::dm::dispatcher&lt; cmdType &gt; 的协作图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d0/d07/classwheels_1_1dm_1_1dispatcher__coll__graph.png" border="0" usemap="#awheels_1_1dm_1_1dispatcher_3_01cmd_type_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="awheels_1_1dm_1_1dispatcher_3_01cmd_type_01_4_coll__map" id="awheels_1_1dm_1_1dispatcher_3_01cmd_type_01_4_coll__map">
<area shape="rect" title=" " alt="" coords="81,800,303,1365"/>
<area shape="rect" href="../../de/d44/classwheels_1_1dm_1_1singleton.html" title=" " alt="" coords="5,411,179,736"/>
<area shape="poly" title=" " alt="" coords="129,750,139,800,134,801,124,751"/>
<area shape="rect" href="../../de/d44/classwheels_1_1dm_1_1singleton.html" title=" " alt="" coords="8,5,176,331"/>
<area shape="poly" title=" " alt="" coords="95,345,95,411,89,411,89,345"/>
<area shape="rect" href="../../d0/db2/structwheels_1_1dm_1_1strategy.html" title=" " alt="" coords="203,531,383,616"/>
<area shape="poly" title=" " alt="" coords="288,616,254,784,249,783,283,615"/>
<area shape="rect" href="../../d0/db2/structwheels_1_1dm_1_1strategy.html" title=" " alt="" coords="220,125,367,211"/>
<area shape="poly" title=" " alt="" coords="296,226,296,531,291,531,291,226"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:aff9890b6c334da4a5ab289b54d04effe" id="r_aff9890b6c334da4a5ab289b54d04effe"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> = void(const <a class="el" href="../../dd/d54/classwheels_1_1variant.html">variant</a>&amp; )</td></tr>
<tr class="separator:aff9890b6c334da4a5ab289b54d04effe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a849ee1073e0775b46829e60be7c571d2" id="r_a849ee1073e0775b46829e60be7c571d2"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a849ee1073e0775b46829e60be7c571d2">evt_func_type_p</a> = <a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> *</td></tr>
<tr class="separator:a849ee1073e0775b46829e60be7c571d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d72c877e5f4db7eca5aeef401057817" id="r_a9d72c877e5f4db7eca5aeef401057817"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9d72c877e5f4db7eca5aeef401057817">clock</a> = std::chrono::high_resolution_clock</td></tr>
<tr class="separator:a9d72c877e5f4db7eca5aeef401057817"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2230dc69f54ce004ee50a6b654fd05f3" id="r_a2230dc69f54ce004ee50a6b654fd05f3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2230dc69f54ce004ee50a6b654fd05f3">timepoint</a> = std::chrono::time_point&lt; <a class="el" href="#a9d72c877e5f4db7eca5aeef401057817">clock</a> &gt;</td></tr>
<tr class="separator:a2230dc69f54ce004ee50a6b654fd05f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5e7911fea7f6844d6020b2458e1e56a" id="r_ae5e7911fea7f6844d6020b2458e1e56a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae5e7911fea7f6844d6020b2458e1e56a">eventQueue</a> = std::queue&lt; <a class="el" href="../../dd/d54/classwheels_1_1variant.html">variant</a> &gt;</td></tr>
<tr class="separator:ae5e7911fea7f6844d6020b2458e1e56a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca35fe795abb30cb3e4620616161e93b" id="r_aca35fe795abb30cb3e4620616161e93b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aca35fe795abb30cb3e4620616161e93b">strategy</a> = <a class="el" href="../../d0/db2/structwheels_1_1dm_1_1strategy.html">wheels::dm::strategy</a>&lt; cmdType , <a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> &gt;</td></tr>
<tr class="separator:aca35fe795abb30cb3e4620616161e93b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classwheels_1_1dm_1_1singleton"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_types_classwheels_1_1dm_1_1singleton')"><img src="../../closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">wheels::dm::singleton&lt; dispatcher&lt; cmdType &gt; &gt;</a></td></tr>
<tr class="memitem:a49cbde8528bcf4e2daa32e6b09e9039c inherit pub_types_classwheels_1_1dm_1_1singleton" id="r_a49cbde8528bcf4e2daa32e6b09e9039c"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a49cbde8528bcf4e2daa32e6b09e9039c">T</a></td></tr>
<tr class="separator:a49cbde8528bcf4e2daa32e6b09e9039c inherit pub_types_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a51a68f07073de31a7cf3babbb286ca8a" id="r_a51a68f07073de31a7cf3babbb286ca8a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a51a68f07073de31a7cf3babbb286ca8a">dispatcher</a> ()</td></tr>
<tr class="memdesc:a51a68f07073de31a7cf3babbb286ca8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">ctor  <br /></td></tr>
<tr class="separator:a51a68f07073de31a7cf3babbb286ca8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f72ad2117968ff5649900aef79b5c7f" id="r_a3f72ad2117968ff5649900aef79b5c7f"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3f72ad2117968ff5649900aef79b5c7f">~dispatcher</a> ()</td></tr>
<tr class="separator:a3f72ad2117968ff5649900aef79b5c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6f97476a2c006c6f471327d350112ff" id="r_af6f97476a2c006c6f471327d350112ff"><td class="memTemplParams" colspan="2">template&lt;typename dataType &gt; </td></tr>
<tr class="memitem:af6f97476a2c006c6f471327d350112ff"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#af6f97476a2c006c6f471327d350112ff">send</a> (const cmdType &amp;cmd, dataType &amp;&amp;data, bool notify=true)</td></tr>
<tr class="memdesc:af6f97476a2c006c6f471327d350112ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">发送命令  <br /></td></tr>
<tr class="separator:af6f97476a2c006c6f471327d350112ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaab8d07e37bcb87ae820a20f7a0ab855" id="r_aaab8d07e37bcb87ae820a20f7a0ab855"><td class="memTemplParams" colspan="2">template&lt;typename dataType &gt; </td></tr>
<tr class="memitem:aaab8d07e37bcb87ae820a20f7a0ab855"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aaab8d07e37bcb87ae820a20f7a0ab855">emit</a> (const cmdType &amp;cmd, dataType &amp;&amp;data, bool notify=true)</td></tr>
<tr class="separator:aaab8d07e37bcb87ae820a20f7a0ab855"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa428adebc353596f03cb750e49c62657" id="r_aa428adebc353596f03cb750e49c62657"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa428adebc353596f03cb750e49c62657">update</a> ()</td></tr>
<tr class="separator:aa428adebc353596f03cb750e49c62657"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab11e58904c1f3d5b6cabe770a1032982" id="r_ab11e58904c1f3d5b6cabe770a1032982"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab11e58904c1f3d5b6cabe770a1032982">clear</a> ()</td></tr>
<tr class="memdesc:ab11e58904c1f3d5b6cabe770a1032982"><td class="mdescLeft">&#160;</td><td class="mdescRight">清理队列，函数映射表  <br /></td></tr>
<tr class="separator:ab11e58904c1f3d5b6cabe770a1032982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accec6f12134ea9831ced6979d7b7c299" id="r_accec6f12134ea9831ced6979d7b7c299"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#accec6f12134ea9831ced6979d7b7c299">connect</a> (const cmdType &amp;cmd, std::function&lt; <a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> &gt; func)</td></tr>
<tr class="memdesc:accec6f12134ea9831ced6979d7b7c299"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接命令和执行部分  <br /></td></tr>
<tr class="separator:accec6f12134ea9831ced6979d7b7c299"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa833694843552ba8f2e1f0361840553" id="r_aaa833694843552ba8f2e1f0361840553"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaa833694843552ba8f2e1f0361840553">connect</a> (const cmdType &amp;cmd, <a class="el" href="#a849ee1073e0775b46829e60be7c571d2">evt_func_type_p</a> func)</td></tr>
<tr class="memdesc:aaa833694843552ba8f2e1f0361840553"><td class="mdescLeft">&#160;</td><td class="mdescRight">连接命令和函数指针指向的处理函数  <br /></td></tr>
<tr class="separator:aaa833694843552ba8f2e1f0361840553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a355a328854756ec29453f92d115784ba" id="r_a355a328854756ec29453f92d115784ba"><td class="memTemplParams" colspan="2">template&lt;typename classType , typename funcType &gt; </td></tr>
<tr class="memitem:a355a328854756ec29453f92d115784ba"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a355a328854756ec29453f92d115784ba">connect</a> (const cmdType &amp;cmd, funcType classType::*func, classType *obj)</td></tr>
<tr class="memdesc:a355a328854756ec29453f92d115784ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">命令绑定，这个函数用来绑定类成员函数  <br /></td></tr>
<tr class="separator:a355a328854756ec29453f92d115784ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf5a396e85ef1065c608d3621292a1e4" id="r_abf5a396e85ef1065c608d3621292a1e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abf5a396e85ef1065c608d3621292a1e4">dispatch</a> (long ovtime)</td></tr>
<tr class="memdesc:abf5a396e85ef1065c608d3621292a1e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">命令执行调度，执行命令队列的头一个  <br /></td></tr>
<tr class="separator:abf5a396e85ef1065c608d3621292a1e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classwheels_1_1dm_1_1singleton"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classwheels_1_1dm_1_1singleton')"><img src="../../closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">wheels::dm::singleton&lt; dispatcher&lt; cmdType &gt; &gt;</a></td></tr>
<tr class="memitem:ae71c401e1f6a3fdd97ed39b821025952 inherit pub_methods_classwheels_1_1dm_1_1singleton" id="r_ae71c401e1f6a3fdd97ed39b821025952"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#ae71c401e1f6a3fdd97ed39b821025952">singleton</a> (const <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">singleton</a> &amp;)=delete</td></tr>
<tr class="separator:ae71c401e1f6a3fdd97ed39b821025952 inherit pub_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00d55bdcea0b0896937c58ab2b9cb9a3 inherit pub_methods_classwheels_1_1dm_1_1singleton" id="r_a00d55bdcea0b0896937c58ab2b9cb9a3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a00d55bdcea0b0896937c58ab2b9cb9a3">singleton</a> (<a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">singleton</a> &amp;&amp;)=delete</td></tr>
<tr class="separator:a00d55bdcea0b0896937c58ab2b9cb9a3 inherit pub_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a23e15a7f9dbdac00349ef34d3b383a69" id="r_a23e15a7f9dbdac00349ef34d3b383a69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#ae5e7911fea7f6844d6020b2458e1e56a">eventQueue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a23e15a7f9dbdac00349ef34d3b383a69">m_store__</a></td></tr>
<tr class="separator:a23e15a7f9dbdac00349ef34d3b383a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac08667c44115b70461036fea89f28deb" id="r_ac08667c44115b70461036fea89f28deb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aca35fe795abb30cb3e4620616161e93b">strategy</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac08667c44115b70461036fea89f28deb">m_func_map__</a></td></tr>
<tr class="separator:ac08667c44115b70461036fea89f28deb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c16070f72eb8f2e48e2278efff03b30" id="r_a1c16070f72eb8f2e48e2278efff03b30"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1c16070f72eb8f2e48e2278efff03b30">m_mutex__</a></td></tr>
<tr class="separator:a1c16070f72eb8f2e48e2278efff03b30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99e075b7157efa6df80f5b2aa283a027" id="r_a99e075b7157efa6df80f5b2aa283a027"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a99e075b7157efa6df80f5b2aa283a027">m_inform_mutex__</a></td></tr>
<tr class="separator:a99e075b7157efa6df80f5b2aa283a027"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cbb32b38bcff81f305f38cd6ad2b00d" id="r_a6cbb32b38bcff81f305f38cd6ad2b00d"><td class="memItemLeft" align="right" valign="top">std::condition_variable&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6cbb32b38bcff81f305f38cd6ad2b00d">m_notify__</a></td></tr>
<tr class="separator:a6cbb32b38bcff81f305f38cd6ad2b00d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_static_methods_classwheels_1_1dm_1_1singleton"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classwheels_1_1dm_1_1singleton')"><img src="../../closed.png" alt="-"/>&#160;静态 Public 成员函数 继承自 <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">wheels::dm::singleton&lt; dispatcher&lt; cmdType &gt; &gt;</a></td></tr>
<tr class="memitem:ab0f35771c8d539c732b6a4e40bcedeaf inherit pub_static_methods_classwheels_1_1dm_1_1singleton" id="r_ab0f35771c8d539c732b6a4e40bcedeaf"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a49cbde8528bcf4e2daa32e6b09e9039c">T</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#ab0f35771c8d539c732b6a4e40bcedeaf">create</a> (Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:ab0f35771c8d539c732b6a4e40bcedeaf inherit pub_static_methods_classwheels_1_1dm_1_1singleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">工厂函数，用来创建单例对象  <br /></td></tr>
<tr class="separator:ab0f35771c8d539c732b6a4e40bcedeaf inherit pub_static_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff26d3af3d193f057a15cb6d25c5062c inherit pub_static_methods_classwheels_1_1dm_1_1singleton" id="r_aff26d3af3d193f057a15cb6d25c5062c"><td class="memItemLeft" align="right" valign="top">static std::shared_ptr&lt; <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a49cbde8528bcf4e2daa32e6b09e9039c">T</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#aff26d3af3d193f057a15cb6d25c5062c">create_shared</a> (Args &amp;&amp;... args)</td></tr>
<tr class="separator:aff26d3af3d193f057a15cb6d25c5062c inherit pub_static_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab064e1d47abf923e4ae0deaac875c173 inherit pub_static_methods_classwheels_1_1dm_1_1singleton" id="r_ab064e1d47abf923e4ae0deaac875c173"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a49cbde8528bcf4e2daa32e6b09e9039c">T</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#ab064e1d47abf923e4ae0deaac875c173">get</a> ()</td></tr>
<tr class="memdesc:ab064e1d47abf923e4ae0deaac875c173 inherit pub_static_methods_classwheels_1_1dm_1_1singleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">获取当前的模块对象指针  <br /></td></tr>
<tr class="separator:ab064e1d47abf923e4ae0deaac875c173 inherit pub_static_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c95860231735ce03395968f726d0246 inherit pub_static_methods_classwheels_1_1dm_1_1singleton" id="r_a4c95860231735ce03395968f726d0246"><td class="memItemLeft" align="right" valign="top">static std::shared_ptr&lt; <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a49cbde8528bcf4e2daa32e6b09e9039c">T</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a4c95860231735ce03395968f726d0246">get_shared</a> ()</td></tr>
<tr class="separator:a4c95860231735ce03395968f726d0246 inherit pub_static_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classwheels_1_1dm_1_1singleton"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classwheels_1_1dm_1_1singleton')"><img src="../../closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">wheels::dm::singleton&lt; dispatcher&lt; cmdType &gt; &gt;</a></td></tr>
<tr class="memitem:a486422f98733581c4462792f61c41fcf inherit pro_methods_classwheels_1_1dm_1_1singleton" id="r_a486422f98733581c4462792f61c41fcf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a486422f98733581c4462792f61c41fcf">singleton</a> ()</td></tr>
<tr class="memdesc:a486422f98733581c4462792f61c41fcf inherit pro_methods_classwheels_1_1dm_1_1singleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">避免直接调用构造函数  <br /></td></tr>
<tr class="separator:a486422f98733581c4462792f61c41fcf inherit pro_methods_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classwheels_1_1dm_1_1singleton"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classwheels_1_1dm_1_1singleton')"><img src="../../closed.png" alt="-"/>&#160;静态 Protected 属性 继承自 <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html">wheels::dm::singleton&lt; dispatcher&lt; cmdType &gt; &gt;</a></td></tr>
<tr class="memitem:a068f4f3064ec965938e0d99d2b890be7 inherit pro_static_attribs_classwheels_1_1dm_1_1singleton" id="r_a068f4f3064ec965938e0d99d2b890be7"><td class="memItemLeft" align="right" valign="top">static std::shared_ptr&lt; <a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a49cbde8528bcf4e2daa32e6b09e9039c">T</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d44/classwheels_1_1dm_1_1singleton.html#a068f4f3064ec965938e0d99d2b890be7">pt_obj__</a></td></tr>
<tr class="separator:a068f4f3064ec965938e0d99d2b890be7 inherit pro_static_attribs_classwheels_1_1dm_1_1singleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename cmdType&gt;<br />
class wheels::dm::dispatcher&lt; cmdType &gt;</div>
<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00029">29</a> 行定义.</p>
</div><h2 class="groupheader">成员类型定义说明</h2>
<a id="a9d72c877e5f4db7eca5aeef401057817" name="a9d72c877e5f4db7eca5aeef401057817"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d72c877e5f4db7eca5aeef401057817">&#9670;&#160;</a></span>clock</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::clock = std::chrono::high_resolution_clock</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00038">38</a> 行定义.</p>

</div>
</div>
<a id="ae5e7911fea7f6844d6020b2458e1e56a" name="ae5e7911fea7f6844d6020b2458e1e56a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5e7911fea7f6844d6020b2458e1e56a">&#9670;&#160;</a></span>eventQueue</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::eventQueue = std::queue&lt; <a class="el" href="../../dd/d54/classwheels_1_1variant.html">variant</a> &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00041">41</a> 行定义.</p>

</div>
</div>
<a id="aff9890b6c334da4a5ab289b54d04effe" name="aff9890b6c334da4a5ab289b54d04effe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff9890b6c334da4a5ab289b54d04effe">&#9670;&#160;</a></span>evt_func_type</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::evt_func_type = void(const <a class="el" href="../../dd/d54/classwheels_1_1variant.html">variant</a>&amp; )</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00035">35</a> 行定义.</p>

</div>
</div>
<a id="a849ee1073e0775b46829e60be7c571d2" name="a849ee1073e0775b46829e60be7c571d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a849ee1073e0775b46829e60be7c571d2">&#9670;&#160;</a></span>evt_func_type_p</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::evt_func_type_p = <a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> *</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00036">36</a> 行定义.</p>

</div>
</div>
<a id="aca35fe795abb30cb3e4620616161e93b" name="aca35fe795abb30cb3e4620616161e93b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca35fe795abb30cb3e4620616161e93b">&#9670;&#160;</a></span>strategy</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::strategy = <a class="el" href="../../d0/db2/structwheels_1_1dm_1_1strategy.html">wheels::dm::strategy</a>&lt; cmdType , <a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00043">43</a> 行定义.</p>

</div>
</div>
<a id="a2230dc69f54ce004ee50a6b654fd05f3" name="a2230dc69f54ce004ee50a6b654fd05f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2230dc69f54ce004ee50a6b654fd05f3">&#9670;&#160;</a></span>timepoint</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::timepoint = std::chrono::time_point&lt; <a class="el" href="#a9d72c877e5f4db7eca5aeef401057817">clock</a> &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00039">39</a> 行定义.</p>

</div>
</div>
<h2 class="groupheader">构造及析构函数说明</h2>
<a id="a51a68f07073de31a7cf3babbb286ca8a" name="a51a68f07073de31a7cf3babbb286ca8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51a68f07073de31a7cf3babbb286ca8a">&#9670;&#160;</a></span>dispatcher()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::dispatcher </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>ctor </p>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00059">59</a> 行定义.</p>

</div>
</div>
<a id="a3f72ad2117968ff5649900aef79b5c7f" name="a3f72ad2117968ff5649900aef79b5c7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f72ad2117968ff5649900aef79b5c7f">&#9670;&#160;</a></span>~dispatcher()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::~<a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">dispatcher</a> </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00061">61</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_a3f72ad2117968ff5649900aef79b5c7f_cgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_a3f72ad2117968ff5649900aef79b5c7f_cgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_a3f72ad2117968ff5649900aef79b5c7f_cgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_a3f72ad2117968ff5649900aef79b5c7f_cgraph">
<area shape="rect" title=" " alt="" coords="5,5,162,48"/>
<area shape="rect" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html#ab11e58904c1f3d5b6cabe770a1032982" title="清理队列，函数映射表" alt="" coords="210,5,366,48"/>
<area shape="poly" title=" " alt="" coords="162,24,195,24,195,29,162,29"/>
</map>
</div>

</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="ab11e58904c1f3d5b6cabe770a1032982" name="ab11e58904c1f3d5b6cabe770a1032982"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab11e58904c1f3d5b6cabe770a1032982">&#9670;&#160;</a></span>clear()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::clear </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>清理队列，函数映射表 </p>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00100">100</a> 行定义.</p>
<div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_ab11e58904c1f3d5b6cabe770a1032982_icgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_ab11e58904c1f3d5b6cabe770a1032982_icgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_ab11e58904c1f3d5b6cabe770a1032982_icgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_ab11e58904c1f3d5b6cabe770a1032982_icgraph">
<area shape="rect" title="清理队列，函数映射表" alt="" coords="410,39,566,81"/>
<area shape="rect" href="../../d5/dc5/classwheels_1_1dm_1_1main_loop.html#a27eb964c8b61f18d5f40acff97240fdd" title="停止运行" alt="" coords="208,5,360,48"/>
<area shape="poly" title=" " alt="" coords="394,47,360,42,360,36,395,42"/>
<area shape="rect" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html#a3f72ad2117968ff5649900aef79b5c7f" title=" " alt="" coords="206,72,362,115"/>
<area shape="poly" title=" " alt="" coords="395,78,362,83,362,78,394,73"/>
<area shape="rect" href="../../d5/dc5/classwheels_1_1dm_1_1main_loop.html#a1a9308820a029e0b8617fdd2c2ec31cc" title=" " alt="" coords="5,5,158,48"/>
<area shape="poly" title=" " alt="" coords="192,29,158,29,158,24,192,24"/>
</map>
</div>

</div>
</div>
<a id="aaa833694843552ba8f2e1f0361840553" name="aaa833694843552ba8f2e1f0361840553"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa833694843552ba8f2e1f0361840553">&#9670;&#160;</a></span>connect() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">const cmdType &amp;</td>          <td class="paramname"><span class="paramname"><em>cmd</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#a849ee1073e0775b46829e60be7c571d2">evt_func_type_p</a></td>          <td class="paramname"><span class="paramname"><em>func</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>连接命令和函数指针指向的处理函数 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">func[</td><td>I ]， 函数指针 </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00123">123</a> 行定义.</p>

</div>
</div>
<a id="a355a328854756ec29453f92d115784ba" name="a355a328854756ec29453f92d115784ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a355a328854756ec29453f92d115784ba">&#9670;&#160;</a></span>connect() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<div class="memtemplate">
template&lt;typename classType , typename funcType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">const cmdType &amp;</td>          <td class="paramname"><span class="paramname"><em>cmd</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">funcType classType::*</td>          <td class="paramname"><span class="paramname"><em>func</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">classType *</td>          <td class="paramname"><span class="paramname"><em>obj</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>命令绑定，这个函数用来绑定类成员函数 </p>
<dl class="tparams"><dt>模板参数</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">classType</td><td>类名称 </td></tr>
    <tr><td class="paramname">funcType，函数名称</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>命令 </td></tr>
    <tr><td class="paramname">func</td><td>函数指针 </td></tr>
    <tr><td class="paramname">类对象指针</td><td></td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00137">137</a> 行定义.</p>

</div>
</div>
<a id="accec6f12134ea9831ced6979d7b7c299" name="accec6f12134ea9831ced6979d7b7c299"></a>
<h2 class="memtitle"><span class="permalink"><a href="#accec6f12134ea9831ced6979d7b7c299">&#9670;&#160;</a></span>connect() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">const cmdType &amp;</td>          <td class="paramname"><span class="paramname"><em>cmd</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::function&lt; <a class="el" href="#aff9890b6c334da4a5ab289b54d04effe">evt_func_type</a> &gt;</td>          <td class="paramname"><span class="paramname"><em>func</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>连接命令和执行部分 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">func[</td><td>I ] 函数对象 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>返回操作结果 </dd></dl>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00114">114</a> 行定义.</p>
<div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_accec6f12134ea9831ced6979d7b7c299_icgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_accec6f12134ea9831ced6979d7b7c299_icgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_accec6f12134ea9831ced6979d7b7c299_icgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_accec6f12134ea9831ced6979d7b7c299_icgraph">
<area shape="rect" title="连接命令和执行部分" alt="" coords="195,48,351,91"/>
<area shape="rect" href="../../d9/d86/classssl_svr_epoll.html#a686be7f2a4aa033e25679d31db06ea5e" title=" " alt="" coords="5,5,147,32"/>
<area shape="poly" title=" " alt="" coords="179,48,130,35,131,30,180,43"/>
<area shape="rect" href="../../d9/d86/classssl_svr_epoll.html#a973cb4d7859824d5328bd884023b1f42" title="连接命令和函数指针指向的处理函数" alt="" coords="5,56,147,83"/>
<area shape="poly" title=" " alt="" coords="179,72,147,72,147,67,179,67"/>
<area shape="rect" href="../../d9/d86/classssl_svr_epoll.html#a922a0adff504e42dc24774c8a18df5e1" title=" " alt="" coords="5,107,147,133"/>
<area shape="poly" title=" " alt="" coords="180,96,131,109,130,104,179,91"/>
</map>
</div>

</div>
</div>
<a id="abf5a396e85ef1065c608d3621292a1e4" name="abf5a396e85ef1065c608d3621292a1e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf5a396e85ef1065c608d3621292a1e4">&#9670;&#160;</a></span>dispatch()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::dispatch </td>
          <td>(</td>
          <td class="paramtype">long</td>          <td class="paramname"><span class="paramname"><em>ovtime</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>命令执行调度，执行命令队列的头一个 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">ovtime[</td><td>I ], 在命令队列中没有命令的时候，函数的等待超时时间。 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>通过超时时间降低系统负载 </dd></dl>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00147">147</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_cgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_cgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_cgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_cgraph">
<area shape="rect" title="命令执行调度，执行命令队列的头一个" alt="" coords="5,5,162,48"/>
<area shape="rect" href="../../dd/d54/classwheels_1_1variant.html#aced76c3bf530e5ea5aa73c0b04b1094a" title=" " alt="" coords="210,13,345,40"/>
<area shape="poly" title=" " alt="" coords="162,24,195,24,195,29,162,29"/>
<area shape="rect" href="../../d6/d33/classwheels_1_1private_____1_1variant____.html#aa6260db0d2704c9def326b5af22dc95d" title=" " alt="" coords="393,5,524,48"/>
<area shape="poly" title=" " alt="" coords="345,24,377,24,377,29,345,29"/>
</map>
</div>
<div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_icgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_icgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_icgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_abf5a396e85ef1065c608d3621292a1e4_icgraph">
<area shape="rect" title="命令执行调度，执行命令队列的头一个" alt="" coords="206,5,362,48"/>
<area shape="rect" href="../../d5/dc5/classwheels_1_1dm_1_1main_loop.html#af67c6172369e74aaac16a2c48aefd0f8" title="启动主循环" alt="" coords="5,5,158,48"/>
<area shape="poly" title=" " alt="" coords="190,29,158,29,158,24,190,24"/>
</map>
</div>

</div>
</div>
<a id="aaab8d07e37bcb87ae820a20f7a0ab855" name="aaab8d07e37bcb87ae820a20f7a0ab855"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaab8d07e37bcb87ae820a20f7a0ab855">&#9670;&#160;</a></span>emit()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<div class="memtemplate">
template&lt;typename dataType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::emit </td>
          <td>(</td>
          <td class="paramtype">const cmdType &amp;</td>          <td class="paramname"><span class="paramname"><em>cmd</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">dataType &amp;&amp;</td>          <td class="paramname"><span class="paramname"><em>data</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>notify</em></span><span class="paramdefsep"> = </span><span class="paramdefval">true</span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00084">84</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_aaab8d07e37bcb87ae820a20f7a0ab855_cgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_aaab8d07e37bcb87ae820a20f7a0ab855_cgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_aaab8d07e37bcb87ae820a20f7a0ab855_cgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_aaab8d07e37bcb87ae820a20f7a0ab855_cgraph">
<area shape="rect" title=" " alt="" coords="5,5,162,48"/>
<area shape="rect" href="../../dd/d54/classwheels_1_1variant.html#aec8c6372866cf7fd422a96e1164aa5c3" title="构建数据对象" alt="" coords="210,13,359,40"/>
<area shape="poly" title=" " alt="" coords="162,24,194,24,194,29,162,29"/>
</map>
</div>

</div>
</div>
<a id="af6f97476a2c006c6f471327d350112ff" name="af6f97476a2c006c6f471327d350112ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6f97476a2c006c6f471327d350112ff">&#9670;&#160;</a></span>send()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<div class="memtemplate">
template&lt;typename dataType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::send </td>
          <td>(</td>
          <td class="paramtype">const cmdType &amp;</td>          <td class="paramname"><span class="paramname"><em>cmd</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">dataType &amp;&amp;</td>          <td class="paramname"><span class="paramname"><em>data</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>notify</em></span><span class="paramdefsep"> = </span><span class="paramdefval">true</span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>发送命令 </p>
<dl class="tparams"><dt>模板参数</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">dataType</td><td>命令参数类型，要求支持拷贝构造，赋值拷贝 </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">evt[</td><td>I ]，命令 </td></tr>
    <tr><td class="paramname">data[</td><td>I ]，命令参数 </td></tr>
    <tr><td class="paramname">notify[</td><td>I ], 是否立即通知执行。如果不立即通知会在dispath的超时时间结束后 再开始执行。也可以后续调用update函数执行通知操作 </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00071">71</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/d08/classwheels_1_1dm_1_1dispatcher_af6f97476a2c006c6f471327d350112ff_cgraph.png" border="0" usemap="#add/d08/classwheels_1_1dm_1_1dispatcher_af6f97476a2c006c6f471327d350112ff_cgraph" alt=""/></div>
<map name="add/d08/classwheels_1_1dm_1_1dispatcher_af6f97476a2c006c6f471327d350112ff_cgraph" id="add/d08/classwheels_1_1dm_1_1dispatcher_af6f97476a2c006c6f471327d350112ff_cgraph">
<area shape="rect" title="发送命令" alt="" coords="5,5,162,48"/>
<area shape="rect" href="../../dd/d54/classwheels_1_1variant.html#aec8c6372866cf7fd422a96e1164aa5c3" title="构建数据对象" alt="" coords="210,13,359,40"/>
<area shape="poly" title=" " alt="" coords="162,24,194,24,194,29,162,29"/>
</map>
</div>

</div>
</div>
<a id="aa428adebc353596f03cb750e49c62657" name="aa428adebc353596f03cb750e49c62657"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa428adebc353596f03cb750e49c62657">&#9670;&#160;</a></span>update()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::update </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00096">96</a> 行定义.</p>

</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="ac08667c44115b70461036fea89f28deb" name="ac08667c44115b70461036fea89f28deb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac08667c44115b70461036fea89f28deb">&#9670;&#160;</a></span>m_func_map__</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aca35fe795abb30cb3e4620616161e93b">strategy</a> <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::m_func_map__</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00048">48</a> 行定义.</p>

</div>
</div>
<a id="a99e075b7157efa6df80f5b2aa283a027" name="a99e075b7157efa6df80f5b2aa283a027"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99e075b7157efa6df80f5b2aa283a027">&#9670;&#160;</a></span>m_inform_mutex__</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::m_inform_mutex__</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00052">52</a> 行定义.</p>

</div>
</div>
<a id="a1c16070f72eb8f2e48e2278efff03b30" name="a1c16070f72eb8f2e48e2278efff03b30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c16070f72eb8f2e48e2278efff03b30">&#9670;&#160;</a></span>m_mutex__</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::m_mutex__</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00050">50</a> 行定义.</p>

</div>
</div>
<a id="a6cbb32b38bcff81f305f38cd6ad2b00d" name="a6cbb32b38bcff81f305f38cd6ad2b00d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cbb32b38bcff81f305f38cd6ad2b00d">&#9670;&#160;</a></span>m_notify__</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::condition_variable <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::m_notify__</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00054">54</a> 行定义.</p>

</div>
</div>
<a id="a23e15a7f9dbdac00349ef34d3b383a69" name="a23e15a7f9dbdac00349ef34d3b383a69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23e15a7f9dbdac00349ef34d3b383a69">&#9670;&#160;</a></span>m_store__</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename cmdType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#ae5e7911fea7f6844d6020b2458e1e56a">eventQueue</a> <a class="el" href="../../dd/d08/classwheels_1_1dm_1_1dispatcher.html">wheels::dm::dispatcher</a>&lt; cmdType &gt;::m_store__</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a> 第 <a class="el" href="../../da/d26/dispatcher_8hpp_source.html#l00046">46</a> 行定义.</p>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>include/designM/eventDetail/<a class="el" href="../../da/d26/dispatcher_8hpp_source.html">dispatcher.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
